package com.conrradocamacho.carmen.dao;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.conrradocamacho.carmen.dao.factory.SQLiteHelper;
import com.conrradocamacho.carmen.dao.model.Pais;
import com.conrradocamacho.carmen.util.Constantes;

public class PaisDAO {
	
	private SQLiteDatabase db;
	private String[] columns = new String[] { "id", "pais_detalhe_id", "trajeto_id" };
	
	private static final String table = "pais_detalhe";
	
	public PaisDAO(Context ctx) {
		SQLiteHelper dbHelper = new SQLiteHelper(
				ctx, 
				Constantes.DATABASE_NAME, 
				Constantes.DATABASE_VERSION, 
				Constantes.TABLE_PAIS_DETALHE_CREATE, 
				Constantes.TABLE_PAIS_DETALHE_DELETE
				);
		db = dbHelper.getWritableDatabase();
	}
	
	public void close() {
		if (db.isOpen()) {
			db.close();
		}
	}
	
	public Pais getById(String id) {
		Pais pais = null;
		
		Cursor c = db.query(table, columns, "id=" + id, null, null, null, "id");
		
		if (c.moveToFirst()) {
			while (!c.isAfterLast()) {
				pais = fill(c);
				c.moveToNext();
			}
		}
		
		c.close();
		
		return pais;
	}
	
	public List<Pais> getAll() {
		List<Pais> lista = new ArrayList<Pais>();
		
		Cursor c = db.query(table, columns, null, null, null, null, "id");
		
		if (c.moveToFirst()) {
			while (!c.isAfterLast()) {
				lista.add(fill(c));
				c.moveToNext();
			}
		}
		
		c.close();
		
		return lista;
	}
	
	public void inserir(Pais pais) {
		ContentValues cv = new ContentValues();
		cv.put("pais_detalhe_id", pais.getPais_detalhe_id());
		cv.put("trajeto_id", pais.getTrajeto_id());
		
		pais.setId((int) db.insert(table, null, cv));
	}
	
	public void remover(String id) {
		db.delete(table, "id=?", new String[] { id });
	}
	
	private Pais fill(Cursor c) {
		return new Pais(
				(int) c.getInt(c.getColumnIndex("id")), 
				(int) c.getInt(c.getColumnIndex("pais_detalhe_id")), 
				(int) c.getInt(c.getColumnIndex("trajeto_id"))
				);
	}

}
